﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BoardPACUtil.Util
{
    public class ApplicationConstants
    {
        public static readonly string[] EMPTY_STRING_ARRAY = new string[] { };

        /* Active, Deactivated Deleted types for USERS */
        public const int DELETEDUSERSTATUS = 2;
        public const int ACTIVEUSERSTATUS = 1;
        public const int DEACTIVATEDUSERSTATUS = 0;

        /* Active and Deleted types */
        public const int DELETED = 0;
        public const int ACTIVE = 1;

        /* Shared Doc and NewsItem */
        public const int SHAREDDOCTYPE = 20;
        public const int NEWSITEMTYPE = 25;

        /* Meeting types */
        public const int MEETING = 0;
        public const int CIRCULAR = 1;
        public const string MEETINGSTRING = "MEETING";
        public const string CIRCULARSTRING = "CIRCULAR";

        /* Strings Related to Actions*/
        public const string CreateMeeting = "CreateMeeting_HTML";
        public const string ViewMeetingsHTML = "ViewMeetings_HTML";        
        public const string ViewPaperInfoXML = "ViewPaperInfo_XML";        
        public const string ChangePaperStatus_XML = "ChangePaperStatus_XML";
        public const string ChangeDecision_XML = "ChangeDecision_XML";

        

        #region Roles
        /* Roles */
        public static readonly Guid ADMINISTRATOR = Guid.Parse("8529e60e-818b-49a7-b95d-38e90f244912");
        public static readonly Guid UNLOCK_ADMIN = Guid.Parse("97ce5035-a55f-4126-8372-203017a89a31");

        public static readonly Guid BOARDSECRETARY = Guid.Parse("2982bf3b-121b-4b90-aea0-49b9b5996356");

        public static readonly Guid RESTRICTED = Guid.Parse("b2e304dc-1db3-44bf-b112-4eddea7595dc");

        /*Types*/
        public static readonly Guid MEMBER = Guid.Parse("a0a8f9c4-68c6-4dfc-9066-7b8f3ccac220");
        public static readonly Guid ORGANIZER = Guid.Parse("874ca608-e39b-474e-b11e-37833fe8e8dc");
        public static readonly Guid SUPPORTTEAM = Guid.Parse("bc989ce2-d174-45fb-b6dd-e86c98057aa4");

        /*Board Member Roles*/
        public static readonly Guid BOARDMEMBER = Guid.Parse("2047be98-70d5-41be-baf5-b91dca9e8a37");
        public static readonly Guid BOARDMEMBER_COMMENT = Guid.Parse("400a02ca-3a93-43a9-9c23-253a5c7da31c");
        public static readonly Guid BOARDMEMBER_VIEW = Guid.Parse("f4236d49-d8d8-4077-a565-f87ff60ed012");

        /*Support Team Roles*/
        public static readonly Guid BOARDSECRETARY_ASSISTANT = Guid.Parse("d23b94d7-154b-4b35-af45-024e666fac13");
        public static readonly Guid BOARDSECRETARY_CONFIRM = Guid.Parse("83468404-d899-4ec7-86c9-77a325506c58");
        public static readonly Guid BOARDSECRETARY_UPLOAD = Guid.Parse("1e950d15-975b-4b8a-9fb7-5239d61334d4");

        /*Roles that can use iPads*/
        public static readonly List<Guid> iPadUserRoles = new List<Guid> { ApplicationConstants.BOARDSECRETARY, ApplicationConstants.BOARDMEMBER, ApplicationConstants.BOARDMEMBER_COMMENT, ApplicationConstants.BOARDMEMBER_VIEW };

        /*Roles are considered BS group*/
        public static readonly List<Guid> BSGroup = new List<Guid> { ApplicationConstants.BOARDSECRETARY, ApplicationConstants.BOARDSECRETARY_ASSISTANT, ApplicationConstants.BOARDSECRETARY_CONFIRM, ApplicationConstants.BOARDSECRETARY_UPLOAD };


        #endregion roles

        #region Paper
        public static readonly List<byte> LivePaperStatuses = new List<byte> { 0, 1, 2, 3, 5 };

        public const string NEWSTATUS = "NEW";
        public const string PAPERREFNO = "Not Applicable";
        public const string DEFAULTPAPERCOLOR = "#ffffff";
        #endregion

        /* Event and Error Constants */
        public const string Event = "EVT";
        public const string Error = "ERR";

        /* Hierarchical Levels of BoardPAC */
        public const byte CATEGORYLEVEL = 0;
        public const byte SUBCATEGORYLEVEL = 1;
        public const byte MEETINGLEVEL = 2;
        public const byte PAPERLEVEL = 3;

        

        /* Web service headers */
        public const string USERID = "UserId";
        public const string USERDISPLAYNAME = "UserDisplayName";
        public const string USERNAME = "UserName";
        public const string FORMAT = "Format";
        public const string ACTION = "Action";
        public const string CONTROLLER = "Controller";

    }
}
